/**
 * @file ObservationsListDialog.h
 *
 * Klasa okna przeglądania obserwacji - nagłówek.
 *
 * @author Zbigniew Siciarz
 * @date 2009
 * @version 2.0.0
 * @since 2.0.0
 */

#ifndef OBSERVATIONSLISTDIALOG_H
#define OBSERVATIONSLISTDIALOG_H

#include "ui_ObservationsListDialog.h"

#include "PlotWindow.h"
#include "ObservationModel.h"
#include "dogz/StarManager.h"
#include <QDialog>
#include <QItemSelection>
#include <QShowEvent>
#include <QString>

class ObservationsListDialog : public QDialog
{
    Q_OBJECT

public:
    ObservationsListDialog(Dogz::StarManager* mgr, QWidget *parent = 0);
    ~ObservationsListDialog() {}

protected:
    void showEvent(QShowEvent* event);

private:
    Ui::ObservationsListDialogClass ui;

    /**
     * Model tabeli obserwacji w bazie danych.
     */
    ObservationModel* model;

    bool lastSearchByStar;

    /**
      * Okno generacji wykresów.
      */
    PlotWindow* plotWindow;

    /**
     * Zarządzanie gwiazdami.
     */
    Dogz::StarManager* m_mgr;

    void doSelect(const QString& filter);


private slots:
    void on_cbxDateType_currentIndexChanged(int index);
    void on_btnShow_clicked();
    void on_btnReset_clicked();
    void on_btnSelectAll_clicked();
    void on_btnExport_clicked();
    void on_btnPlot_clicked();

    void updateSelection(const QItemSelection&, const QItemSelection&);
};

#endif // OBSERVATIONSLISTDIALOG_H
